Fix validate user-supplied paths and strengthen Input handling lead Uncontrolled data used in path expression #1209
+127
−91
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Accessing files using paths constructed from user-controlled data can allow an attacker to access unexpected resources. This can result in sensitive information being revealed or deleted, or an attacker being able to influence behavior by modifying unexpected files. Paths that are naively constructed from data controlled by a user may be absolute paths, or may contain unexpected special characters such as "..". Such a path could point anywhere on the file system.
Description
This PR fixes multiple path traversal vulnerabilities and strengthens input validation to ensure safe filesystem access.
web/handler.go
(parseImportMap
)AppDir
and user-supplied paths before file access.AppDir
."Invalid file name"
for invalid input.server/npmrc.go
(NewNpmRcFromJSON
)zoneId
to allow only alphanumeric characters, dashes, and underscores (^[\w\-]+$
).server/build_resolver.go
(validateJSFile
)ctx.wd/node_modules/pkgName
).internal/storage/storage_fs.go
Stat
,Get
,Put
,Delete
,DeleteAll
, andList
to use the validated paths.Notes
path/filepath
,strings
,regexp
).